// pages/i/set-order-express-no.js
const OrderService = require('../../services/order');

Page({

  /**
   * 页面的初始数据
   */
  data: {
    id: 0,
    orderInfo: null,
    expressNo: '', // 快递单号
    loading: false, // 提交状态
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.setData({
      id: options.id
    });
    this.loadOrderInfo();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  async loadOrderInfo() {
    try {
      wx.showLoading({
        title: '加载中...'
      });
      
      const res = await OrderService.getOrderInfo(this.data.id);
      if (res.success) {
        this.setData({ orderInfo: res.data });
      } else {
        wx.showToast({
          title: res.message || '获取订单信息失败',
          icon: 'none'
        });
      }
    } catch (error) {
      wx.showToast({
        title: '网络请求失败',
        icon: 'none'
      });
    } finally {
      wx.hideLoading();
    }
  },

  /**
   * 输入快递单号
   */
  onExpressNoInput(e) {
    this.setData({
      expressNo: e.detail.value
    });
  },

  /**
   * 提交快递单号
   */
  async submitExpressNo() {
    const { expressNo, orderInfo, loading } = this.data;
    
    if (loading) return;
    
    if (!expressNo.trim()) {
      wx.showToast({
        title: '请输入快递单号',
        icon: 'none'
      });
      return;
    }

    if (!orderInfo) {
      wx.showToast({
        title: '订单信息加载中，请稍后重试',
        icon: 'none'
      });
      return;
    }

    // 检查订单状态
    if (orderInfo.order.status !== 1) {
      wx.showToast({
        title: '订单状态不正确，只有已付款的订单才能发货',
        icon: 'none'
      });
      return;
    }

    try {
      this.setData({ loading: true });
      
      wx.showLoading({
        title: '提交中...'
      });

      const res = await OrderService.updateExpressNo(this.data.id, expressNo.trim());
      
      if (res.success) {
        wx.showToast({
          title: '发货成功',
          icon: 'success'
        });
        
        // 延迟返回上一页
        setTimeout(() => {
          wx.navigateBack();
        }, 1500);
      } else {
        wx.showToast({
          title: res.message || '发货失败',
          icon: 'none'
        });
      }
    } catch (error) {
      wx.showToast({
        title: '网络请求失败',
        icon: 'none'
      });
    } finally {
      this.setData({ loading: false });
      wx.hideLoading();
    }
  }
})